import numpy as np
import pandas as pd


def 统计():
    path = "D:\\Download\\WeChat Files\\wxid_kdchbeq2xllp22\\FileStorage\\File\\2025-03\\满意度清单W9.xlsx"

    df = pd.read_excel(
        path
        , usecols=['宽带账号', '网络质量'])
    df2 = pd.read_csv('/temp/t.csv', dtype={
        '宽带账号': str
    })
    df = df.merge(df2, on='宽带账号', how='left')
    df['用户是否中断'] = np.where(df['天数'].notna(), '是', '否')
    conditions = [
        df['天数'].isna(),
        df['天数'] == 1,
        df['天数'] > 1
    ]
    choices = [
        '',
        '1',
        '2及以上'
    ]
    df['中断天数分类'] = np.select(conditions, choices, default=None)

    with pd.ExcelWriter("D:\\中断输入\\新建文件夹\\满意度结果.xlsx") as writer:
        res = df.groupby('用户是否中断').agg(
            网络质量=('网络质量', 'mean'),
            数量=('网络质量', 'count')
        ).reset_index()
        res['得分'] = (res['网络质量'] - 1) / 9 * 100
        # 将 df1 写入名为 'Sheet1' 的工作表
        res.to_excel(writer, sheet_name='Sheet1', index=False)
        # 将 df2 写入名为 'Sheet2' 的工作表
        res = df.groupby('中断天数分类').agg(
            网络质量=('网络质量', 'mean'),
            数量=('网络质量', 'count')
        ).reset_index()
        res['得分'] = (res['网络质量'] - 1) / 9 * 100
        res.to_excel(writer, sheet_name='Sheet2', index=False)
    df = df[['宽带账号', '网络质量', '用户是否中断', '天数', '中断天数分类', '次数']]
    df.to_excel('/temp/t.xlsx', index=False)


def 计算用户中断天数次数():
    df = pd.read_csv("D:\\中断输入\\输出\\1月单用户中断明细.csv", usecols=['宽带账号', '中断次数'], dtype={
        '宽带账号': str,
        '中断次数': int
    })

    df2 = pd.read_csv("D:\\中断输入\\新建文件夹\\10-12明细.csv", usecols=['宽带账号', '中断次数'], dtype={
        '宽带账号': str,
        '中断次数': int
    })
    df3 = pd.read_csv("D:\\中断输入\\输出\\2月单用户中断明细.csv", usecols=['宽带账号', '中断次数'], dtype={
        '宽带账号': str,
        '中断次数': int
    })
    df4 = pd.read_csv("D:\\中断输入\\输出\\3月单用户中断明细.csv", usecols=['宽带账号', '中断次数'], dtype={
        '宽带账号': str,
        '中断次数': int
    })
    df = pd.concat([df, df2, df3, df4])
    res = df.groupby('宽带账号').agg(
        天数=('宽带账号', 'count'),
        次数=('中断次数', 'sum')
    ).reset_index()
    res.to_csv("/temp/t.csv", index=False)


if __name__ == '__main__':
    计算用户中断天数次数()
    统计()
